<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

class Usuarios extends CI_Controller {
	
	function __construct() {
		parent::__construct();
	
		# Carregando Models
		$this->load->model(
		array(
				'Comanda'
			)
		);
	}
	
	/**
	* @name index()
	* @param void
	* @return void
	* @see Usuario
	* @since 28/05/2013
	* @author Carlos Augusto Dugonski
	*/
	public function index() {
		if($this->index->logado() == 'administrador') {
			$this->index->montarPagina('usuario/usuario_view');
		} else {
			show_error(ERRO_PERMISSAO);
		}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function criar(){
    	if ($this->index->logado() == 'administrador') {
	    	$aDdata['login_usuario'] = mysql_real_escape_string(strtolower($_POST['login']));
	    	$aDdata['email_usuario'] = mysql_real_escape_string(strtolower($_POST['email']));
	    	$oBcrypt = new Bcrypt();
			$aDdata['senha_usuario'] = mysql_real_escape_string($oBcrypt->hash($_POST['senha']));
	    	$aDdata['grupo_usuario'] = mysql_real_escape_string(strtolower($_POST['grupo']));
	    	$aDdata['id_ambiente'] = 1;
	    	$this->usuario->criar($aDdata);
	    	redirect('usuarios');
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function ler(){
    	if ($this->index->logado() == 'administrador') {
    		echo '{ "aaData" : ' . json_encode($this->usuario->ler()) . " } ";
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function atualizar(){
    	if ($this->index->logado() == 'administrador') {
	    	$aDdata['login_usuario'] = mysql_real_escape_string(strtolower($_POST['login']));
	    	$aDdata['email_usuario'] = mysql_real_escape_string(strtolower($_POST['email']));
	    	$oBcrypt = new Bcrypt();
	    	if($_POST['senha'] == NULL) {
	    		$aDdata['senha_usuario'] = mysql_real_escape_string($oBcrypt->hash($_POST['senha_antiga']));
	    	} else {
	    		$aDdata['senha_usuario'] = mysql_real_escape_string($oBcrypt->hash($_POST['senha']));
	    	}
	    	$aDdata['grupo_usuario'] = mysql_real_escape_string(strtolower($_POST['grupo']));
	    	$this->usuario->atualizar($aDdata);
	    	redirect('usuarios');
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function deletar($iIdUsuario){
    	if ($this->index->logado() == 'administrador') {
    		$this->usuario->deletar($iIdUsuario);
    		redirect('usuarios');
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function lerByLogin(){
    	if (!$this->usuario->lerByLogin($_GET['login'])) {
    		echo '{ "success": "Diposnível" }';
    		return true;
    	} else {
    		echo '{ "error": "Usuário já existente" }';
    		return false;
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function lerById($iId){
     	if ($this->usuario->lerById($iId)) {
	    	echo json_encode($this->usuario->lerById($iId));
    	} else {
			show_error(ERRO_VALORES);
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function login($sMesa = NULL, $sPasse = NULL){
    	if (isset($sMesa) && isset($sPasse)) {
			if ($this->usuario->lerByLogin($sMesa)) {
				$sLogin = $sMesa;
				$sSenha = $sPasse;
			} else {
				$this->index->montarPagina('mesa/qrmenu_view');
			}
    	} else if ($_POST['login'] != NULL && $_POST['senha'] != NULL) {
	    	$sLogin = $_POST['login'];
	    	$sSenha = $_POST['senha'];
    	}
    	if (isset($sLogin) && isset($sSenha)) {
    		$oResultado = $this->usuario->login($sLogin, $sSenha);
    	
	    	if ($oResultado){
	    		$this->session->set_userdata(
	    				array(
	    						'id_usuario'		=> 	$oResultado->id_usuario,
	    						'login_usuario'		=> 	$oResultado->login_usuario,
	    						'email_usuario'		=>	$oResultado->email_usuario,
	    						'grupo_usuario'		=>	$oResultado->grupo_usuario
	    				)
	    		);
	    		redirect('home');
	    	} else {
    			redirect('home');
	    	}
    	} else {
    		$this->index->montarPagina('mesa/senha_view');
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function logout($sMesa = NULL){
    	$this->session->unset_userdata('session_id');
    	$this->session->unset_userdata('id_usuario');
    	$this->session->unset_userdata('login_usuario');
    	$this->session->unset_userdata('email_usuario');
    	$this->session->unset_userdata('grupo_usuario');
    	$this->session->unset_userdata('logado');
    	$this->session->unset_userdata('user_data');
    	$this->session->sess_destroy();
    	$this->session->_sess_gc();
    	if ($sMesa != null) {
    		$this->index->montarPagina('mesa/qrmenu_view');
    	} else {
    		redirect('admin');
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function logoutMesa($sLogin){
    	$this->usuario->logoutMesa($sLogin);
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function ocuparMesa(){
    	$sLogin = $_POST['login_mesa'];
    	$oBcrypt = new Bcrypt();
    	$sSenhaComanda = mysql_real_escape_string($oBcrypt->hash($_POST['senha_comanda']));
    	$this->db->trans_start();
    	$this->usuario->ocuparMesa($sLogin, $sSenhaComanda);
    	$aUsuario = $this->usuario->lerByLogin($sLogin);
    	$this->Comanda->criar($aUsuario['id_usuario'], $sLogin);
    	$this->db->trans_complete();
    	if ($this->db->trans_status()) {
    		$this->login($sLogin, $_POST['senha_comanda']);
    		redirect('home');
    	} else {
    		$this->index->montarPagina('mesa/qrmenu_view');
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function liberarMesa($sLogin){
    	$this->usuario->liberarMesa($sLogin);
    	$this->logoutMesa($sLogin);
    	$this->index->montarPagina('mesa/pagar_view');
    }
}

/* End of file Usuarios.php */